home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 076-100 / disk_098 / thai / rmdup.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  1KB  |  73 lines

  1.  
  2. #include "quiz.h"
  3.  
  4.  
  5. struct thai_phrase *        chosen_sentence;
  6. struct thai_phrase *        chosen_word;
  7. int                            file_changed = FALSE;
  8. struct thai_phrase            sentence_head;
  9. struct thai_phrase            word_head;
  10.  
  11. char scan_buf[ 3 ][ MAX_STRING ];
  12. struct thai_phrase scan = {
  13.     &scan_buf[0][0] , &scan_buf[1][0] , &scan_buf[2][0] , 0 , 0
  14. };
  15.  
  16.  
  17. main ()
  18. {
  19.     if ( load_phrases () ) {
  20.         rm_dup ( &sentence_head , "sentence" );
  21.         rm_dup ( &word_head , "word" );
  22.     }
  23.     else
  24.         puts ( "Failed to load phrases" );
  25.     unload_phrases ();
  26. }
  27.  
  28.  
  29. rm_dup ( head , desc )
  30. struct thai_phrase *head;
  31. char *desc;
  32. {
  33.     struct thai_phrase *p , *q , *next;
  34.     int num_duplicates , num_deletions;
  35.  
  36.     num_duplicates = 0;
  37.     num_deletions = 0;
  38.     for ( p = head->next; p != NULL  &&  p->next != NULL; p = p->next ) {
  39.         for ( q = p->next; q != NULL; q = next ) {
  40.             next = q->next;
  41.             switch ( same ( p , q ) ) {
  42.  
  43.             case 0 :        /* different */
  44.                 break;
  45.  
  46.             case 1 :
  47.                 num_duplicates++;
  48.                 break;
  49.  
  50.             case 2 :
  51.                 del_phrase ( head , q );
  52.                 file_changed = TRUE;
  53.                 num_deletions++;
  54.             }
  55.         }
  56.     }
  57.     printf ( "%d duplicate %ss removed\n" , num_deletions , desc );
  58.     printf ( "%d duplicate %ss not removed\n" , num_duplicates , desc );
  59. }
  60.  
  61.  
  62. same ( p , q )
  63. struct thai_phrase *p , *q;
  64. {
  65.     if ( strcmp ( p->thai , q->thai ) == 0 ) {
  66.         if ( strcmp ( p->phonetic , q->phonetic ) == 0
  67.         &&   strcmp ( p->english , q->english ) == 0 )
  68.             return ( 2 );        /* identical */
  69.         return ( 1 );            /* same word, different description */
  70.     }
  71.     return ( 0 );                /* different word */
  72. }
  73.